package com.example.linyiquan.login.util;

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;

import com.example.linyiquan.login.bean.AppBean;

import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * Created by linyiquan on 17-4-14.
 */

public class Utils {

    public static List<AppBean> getApps(Context context){
        List<AppBean> list = new ArrayList<>();
        PackageManager pm = context.getPackageManager(); // 得到PackageManager对象
        // List<ApplicationInfo> packs = pm.getInstalledApplications(0); //
        // 得到系统安装的所有程序包的PackageInfo对象
        List<PackageInfo> packs = pm.getInstalledPackages(0); // 得到用户安装的所有程序包的PackageInfo对象
        for (PackageInfo pi : packs) {
            // 显示用户安装的应用程序，而不显示系统程序
            if ((pi.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0
                    && (pi.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 0) {
                // 这将会显示所有安装的应用程序，不包括系统应用程序
                /**
                 * 获得文件大小 publicSourceDir获得路径，再通过该路径创建一个文件new File(String dir)，
                 * 得到该文件长度除以1024则取得该应用的大小。
                 * 取得程序大小，通过application的publicSourceDir获得。
                 * 取得程序时间，通过application的SourceDir获得。
                 */
                String dir = pi.applicationInfo.publicSourceDir;
                int size = Integer.valueOf((int) new File(dir).length());
                long date = new Date(new File(dir).lastModified()).getTime();
                AppBean item = new AppBean();
                item.setAppName(pi.applicationInfo.loadLabel(pm).toString());
                item.setIcon(pi.applicationInfo.loadIcon(pm));
                item.setPackageInfo(pi.applicationInfo.packageName);
                list.add(item);
            }
        }
        return list;
    }

}
